package com.fuzzyclassification;


import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Rosana
 */
public class Consistencia {
    
    private List<Regra> regras;

    public Consistencia(List<Regra> regras) {
        this.regras = regras;
    }
    
    public void eliminaRegrasRepetidas()
    {
        for(int i=0; i<this.regras.size(); i++)
        {
            for(int j=i+1; j<this.regras.size(); j++)
            {
                if(regras.get(i).regraIgual(regras.get(j)))
                {
                    this.regras.remove(regras.get(j));
                    j--;
                }
            }
        }
        System.out.println("regra size = "+regras.size());
    }
    
    private void removerItens(List<Regra> list)
    {
        for(int z=0; z<list.size(); z++)
        {
            this.regras.remove(list.get(z));
        }
    }
    
    public void eliminaInconsistenciaRegras()
    {
        for(int i=0; i<this.regras.size(); i++)
        {
            List<Regra> lista1 = new ArrayList();
            List<Regra> lista2 = new ArrayList();
            lista1.add(regras.get(i));
            //busca Conjuntos de cada cada saída distinta
            for(int j=i+1; j<this.regras.size(); j++)
            {
                if(regras.get(i).entradaEquivalente(regras.get(j)))
                {
                    lista2.add(regras.get(j));
                }
                else if(regras.get(i).regraIgual(regras.get(j)))
                {
                    lista1.add(regras.get(j));
                }
            }
            
            if(lista1.size() > 0 && lista2.size() > 0)
            {
                if(lista1.size() > lista2.size())
                {
                    removerItens(lista2);
                }
                else if(lista1.size() < lista2.size())
                {
                    removerItens(lista1);
                }
                else
                {
                    int sorteio = (int)(Math.random()*2)+1;
                    
                    if(sorteio == 1)
                    {
                        removerItens(lista2);                  
                    }
                    else
                    {
                         removerItens(lista1);
                    }
                }             
            }            
        }
        
        System.out.println("regra size = "+regras.size());
        
    }
    
}
